'use strict'
const devServer = require('./config/devServer')
const path = require('path')

function resolve(dir) {
  return path.join(__dirname, dir)
}

const CompressionPlugin = require('compression-webpack-plugin');
const notDev = process.env.NODE_ENV !== 'development';

module.exports = {
  publicPath: "/",
  // 打包文件名
  outputDir: 'dist',
  // 用于放置生成的静态资源 (js、css、img、fonts) 的；（项目打包之后，静态资源会放在这个文件夹下）
  assetsDir: 'static',
  // 是否开启eslint保存检测，有效值：ture | false | 'error'
  lintOnSave: process.env.NODE_ENV === 'development',
  // 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  // webpack-dev-server 相关配置
  devServer: {
    port: devServer.port,
    proxy: devServer.proxy,
    host: devServer.host,
    open: false,
    disableHostCheck: true
  },
  configureWebpack: {
    resolve: {
      alias: {
        '@': resolve('src')
      }
    }
  },
  pluginOptions: {
  },
  css: {
    loaderOptions: {
      sass: {
        prependData: `@import "@/assets/styles/define.scss";`
      }
    }
  },
  chainWebpack(config) {
    // 生产环境，开启js\css压缩
    if (notDev) {
      config.plugin('compressionPlugin').use(new CompressionPlugin({
        // eslint-disable-next-line
        test: /\.js$|.\css|.\less/, // 匹配文件名
        threshold: 10240, // 对超过10k的数据压缩
        deleteOriginalAssets: false // 不删除源文件
      }));
    }
  }
}
